{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "3341af42",
   "metadata": {},
   "source": [
    "# 参考"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7ecbefe3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 准备工作\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from scipy import stats\n",
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.colors as mcolors\n",
    "from scipy.stats import skewnorm\n",
    "from scipy.optimize import minimize_scalar\n",
    "from collections.abc import Callable\n",
    "import pandas as pd\n",
    "\n",
    "# 解决中文乱码问题\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为黑体\n",
    "plt.rcParams['axes.unicode_minus'] = False # 解决负号显示为方块的问题\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7b55ec0",
   "metadata": {},
   "source": [
    "## 1. 数据生成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "cb1225a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1.30204445, 1.29280382, 0.6430003 , ..., 1.18264051, 0.16554699,\n",
       "       0.450364  ], shape=(10000,))"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成等差数列\n",
    "np.linspace(0, 1, 10000)\n",
    "\n",
    "# 生成等比数列\n",
    "np.logspace(0, 1, 10000)\n",
    "\n",
    "# 生成随机数\n",
    "np.random.rand(10000)\n",
    "\n",
    "# 生成正态分布随机数\n",
    "np.random.randn(10000)\n",
    "\n",
    "# 生成均匀分布随机数\n",
    "np.random.uniform(0, 1, 10000)\n",
    "\n",
    "# 生成指数分布随机数\n",
    "np.random.exponential(1, 10000)\n",
    "\n",
    "# 生成正态分布随机数\n",
    "np.random.normal(0, 1, 10000)\n",
    "\n",
    "# 生成二项分布随机数\n",
    "np.random.binomial(10, 0.5, 10000)\n",
    "\n",
    "# 生成泊松分布随机数\n",
    "np.random.poisson(1, 10000)\n",
    "\n",
    "# 生成贝塔分布随机数\n",
    "np.random.beta(2, 5, 10000)\n",
    "\n",
    "# 生成超几何分布随机数\n",
    "np.random.hypergeometric(10, 5, 2, 10000)\n",
    "\n",
    "# 生成卡方分布随机数\n",
    "np.random.chisquare(2, 10000)\n",
    "\n",
    "# 生成韦氏分布随机数\n",
    "np.random.weibull(2, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b166a9fc",
   "metadata": {},
   "source": [
    "## 2. 各种分布的概率密度函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f84efc16",
   "metadata": {},
   "outputs": [],
   "source": [
    "x  = np.linspace(-5, 5, 100)\n",
    "\n",
    "# 计算正态分布的概率密度\n",
    "pdf_normal = stats.norm.pdf(x, loc=0, scale=1)\n",
    "\n",
    "# 计算偏正态分布的概率密度\n",
    "pdf_skewed = stats.skewnorm.pdf(x, a=5, loc=0, scale=1)\n",
    "\n",
    "# 计算正态逆高斯分布的概率密度\n",
    "pdf_norminvgauss = stats.norminvgauss.pdf(x, a=5, b=0.5, loc=0, scale=1)\n",
    "\n",
    "# 计算学生t分布的概率密度\n",
    "pdf_t = stats.t.pdf(x, df=5, loc=0, scale=1)\n",
    "\n",
    "# 计算Johnson SB分布的概率密度（支持偏度和峰度参数）\n",
    "pdf_johnsonsb = stats.johnsonsb.pdf(x, a=5, b=0.5, loc=0, scale=1)\n",
    "\n",
    "# 计算Johnson SU分布的概率密度（支持偏度和峰度参数）\n",
    "pdf_johnsonsu = stats.johnsonsu.pdf(x, a=5, b=0.5, loc=0, scale=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "179b68ed",
   "metadata": {},
   "source": [
    "## 3. 各种优化求解"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2071af9b",
   "metadata": {},
   "source": [
    "### 3.1. 标量函数求解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "2d438121",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(-2.000000202597239)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 标量函数局部最小化\n",
    "def f(x):\n",
    "    return (x - 2) * x * (x + 2)**2\n",
    "\n",
    "# 使用 Brent 方法，我们找到局部最小值，如下所示\n",
    "from scipy.optimize import minimize_scalar\n",
    "res = minimize_scalar(f)\n",
    "res.fun\n",
    "# 最小值为\n",
    "res.x\n",
    "\n",
    "# 使用 Bounded 方法，我们找到具有指定边界的局部最小值，如下所示\n",
    "res = minimize_scalar(f, bounds=(-3, -1), method='bounded')\n",
    "res.fun  # minimum\n",
    "res.x  # minimizer"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7c17c08",
   "metadata": {},
   "source": [
    "### 3.2. 局部（多元）优化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "bfee3dfb",
   "metadata": {},
   "outputs": [],
   "source": [
    "# "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5d55c113",
   "metadata": {},
   "source": [
    "### 3.3. 全局优化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "90940490",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "e613967b",
   "metadata": {},
   "source": [
    "### 3.4. 最小二乘和曲线拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "04d74183",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 最小二乘法求解分布参数\n",
    "from scipy.optimize import least_squares\n",
    "def find_dist_params_by_sk(dist_constructor: Callable, skew: float, kurt: float, initial_guess = [0.0, 1.0], bounds = ([-0.5, 0.5], [0.5, 2.0])) -> tuple[float, float]:\n",
    "\t\tdef equations(params, target_skew, target_kurt):\n",
    "\t\t\t\tskew_theory, kurt_theory = dist_constructor(*params).stats(moments='sk')\n",
    "\t\t\t\treturn [skew_theory - target_skew, kurt_theory - target_kurt]\n",
    "\t\t\n",
    "\t\tprint(f'开始求解, 目标偏度={skew:.3f}, 目标峰度={kurt:.3f}')\n",
    "\t\t# 数值求解（高精度）\n",
    "\t\tresult = least_squares(\n",
    "\t\t\t\tequations,\n",
    "\t\t\t\tinitial_guess,\n",
    "\t\t\t\targs=(skew, kurt),\n",
    "\t\t\t\tbounds=bounds,\n",
    "\t\t)\n",
    "\t\tprint(f'完成求解, 结果: {result.x}')\n",
    "\n",
    "\t\treturn tuple(result.x)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "474b6904",
   "metadata": {},
   "source": [
    "# 4. 傅里叶变换"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3bc256e",
   "metadata": {},
   "source": [
    "## 5.1. 傅里叶变换基本概念"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c63d6fa0",
   "metadata": {},
   "source": [
    "傅里叶变换是信号处理的重要工具，它可以将时域信号转换为频域信号，从而对信号进行分析和处理。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2c8d0139",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 25391 (\\N{CJK UNIFIED IDEOGRAPH-632F}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 24133 (\\N{CJK UNIFIED IDEOGRAPH-5E45}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 27491 (\\N{CJK UNIFIED IDEOGRAPH-6B63}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 24358 (\\N{CJK UNIFIED IDEOGRAPH-5F26}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 27874 (\\N{CJK UNIFIED IDEOGRAPH-6CE2}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 39057 (\\N{CJK UNIFIED IDEOGRAPH-9891}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 35889 (\\N{CJK UNIFIED IDEOGRAPH-8C31}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 29575 (\\N{CJK UNIFIED IDEOGRAPH-7387}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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b775Zu4//uM/cmPGjMnttttuSSep6MILL8wNGTIk99hjj+Wee+653KhRo5ILn99p5/nnn08u8cfGD37wg+Tjt99+O3n8uuuuS47X+++/P/fCCy8kHeb23HPP3CeffFJ4jRNPPDE3YsSI3NNPP5178sknk849X/va12r4VdVHfeNjf//3f590LorH9COPPJI77LDDkvqtX7++8Brqu30XXXRRrlevXsnPhWXLlhUu69atKzxnRz8XNm3alDv44INz48aNyy1evDg3Z86c3O67756bOnVqLut2VN/XX389N2PGjKSu8RiOPyf22muv3LHHHlt4DfX9fN/5zneSLoixfvFnbLwdu3LOnTs3edzxm159Hb/p+MoWnRDr9RgWpNqQG2+8MTmIOnfunLRDX7hwYa2HVJe++tWv5gYOHJjU8T/9p/+U3I4/CPPiL/f//b//96S1abdu3XKnnXZa8h99tu/f//3fk1/wt7zEttz5FuhXXnllrn///skfBEaPHp177bXXSl7jgw8+SH6x33XXXZN2pd/4xjeSkMDn1zf+Mhr/wxH/gxHbww4dOjR3/vnnb/VHFvXdvm3VNl5uv/32sn4uvPXWW7kJEybkdtlll+SPM/GPNk1NTbms21F9ly5dmvzS2adPn+Tnwz777JO77LLLcqtXry55HfXdvr/5m79Jvvfjf9fiz4L4MzYfoiLHb3r1dfzunCD1SZ0eww3x/2o3HwYAAFB/7JECAAAokyAFAABQJkEKAACgTIIUAABAmQQpAACAMglSAAAAZRKkAAAAyiRIAQAAlEmQAiDzNm7cGPbZZ5/w1FNPVfV158yZE4YPHx6am5ur+roA1F5DLpfL1XoQALAj8+fPD//tv/230LVr15L7Y0j5yle+Em688cYwcuTIsGHDhq0+d+3atWHJkiWhS5cu23ztH//4x+GBBx4I8+bNK9zX0NAQ7rvvvnDqqaeWPPfrX/96WLVqVfjNb37TonEfeeSR4Zvf/GY4++yzW/iVAlAPOtZ6AADQEp988kk444wzwtVXX11y/1tvvRW+853vFMLP4sWLt/rc4447Lmzv74bx/n/+538OM2bMSGXcMXjFoCZIAbQvlvYBkGmLFi0Kb7zxRjj55JPL/twY4mJ42/ISg1vexIkTw3PPPZe8BwDthyAFQKb99re/Dfvuu2/o0aNH2Z87ePDgsGzZssLl+eefD3379g3HHnts4TlDhgwJ/fv3T94HgPbD0j4AMu3tt98OgwYN2uZjX/va10KHDh1K7ot7sPKzV/GxAQMGJB+vX78+2U81atSorZYfxteP7wNA+yFIARCyvvdqywYWeTfccEMYM2ZMyX2XX3552Lx581bP/Zu/+Zvw0UcfJQ0rGhtLF3zssssuYd26dVUeOQC1JEgBkGm77bZbePHFF7f5WJxtim3Ri8UlgLFrX7Frr702PPzww+GZZ57Z5hLBDz/8MOy+++5VHjkAtWSPFACZNmLEiPDqq69ut6vfjvzqV79KOv798pe/DHvvvfdWj8clf7HRRHwfANoPQQqATDv++OML55kq10svvRTOOeecZLnfQQcdFJYvX55c4gxU3sKFC5PzV8W9UwC0H4IUAJkWu+yddtpp4c477yz7c2Nb87j3KS7tGzhwYOFy+umnF57z85//PJx11lmhW7duVR45ALVkjxQAmfc//sf/CGPHjk2ud9111+S+7S31mzVrVsnJduNle95///1w7733JoELgPbFjBQAmTds2LDw/e9/P7z55ptVfd14wt6bb7457LnnnlV9XQBqz4wUAHWhV69eYfbs2cllS+PHj0+ue/fuHY444ohtfv6WLcm39HkzS5WKY9neeACobw25StsUAQAAZJSlfQAAAGUSpAAAAMokSAEAAJRJkAIAACiTIAUAAFAmQQoAAKBMghQAAECZBCkAAIBQnv8f9/fXq+TqfmgAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 30697 (\\N{CJK UNIFIED IDEOGRAPH-77E9}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 24418 (\\N{CJK UNIFIED IDEOGRAPH-5F62}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQtlJREFUeJzt3QmUVdWZL/CvihkUaFBAWkDjEGchapDETMrg0C4HVjqmfYZ0eNoxaKK8NoZ+iIKmMby8mNY4pN/ziVnt0Jq0pqUNAbHVNoIg0URxiCZGTSuQaAMiAgVVb+0TboVC0CrDyd236vdb63jr3nPq3sNXt8r61977O3VNTU1NAQAAQKvVt/5QAAAAEkEKAACgjQQpAACANhKkAAAA2kiQAgAAaCNBCgAAoI0EKQAAgDYSpAAAANpIkAIAAGgjQQoAAKCNBCkAAIA26tzWTwCAalm2bFmMGDEiunbtut39GzdujMcff/w9j3nmmWdi/fr1VTlun332afW/F4B8CVIA1Iympqb48Ic/HA8//PB29x999NGtPqZaxwHQPpjaBwAA0EaCFAAAQBsJUgAAAG0kSAEAALSRIAUAANBGghQAAEAbCVIAAABtJEgBAAC0kSAFAADQRoIUAABAGwlSAAAAbSRIAQAAtFHntn4CAFTTokWLom/fvtvdt3bt2lYfU83jAKh9dU1NTU3VPgkAAIBaYmofAABAGwlSAAAAbSRIAQAAtJFmExHR2NgYr776auy6665RV1dX7dMBAACqJLWQePPNN2Pw4MFRX7/jcSdBKqIIUUOGDKn2aQAAAJl45ZVXYs8999zhfkEqohiJqhSrd+/eVT2XhoaGmDdvXowdOza6dOlS1XNpj9S3XOpbPjUul/qWS33Lp8blUt+OUd81a9YUgyyVjLAjglTqAb9lOl8KUTkEqZ49exbn4Rt051Pfcqlv+dS4XOpbLvUtnxqXS307Vn3r3mPJj2YTAAAAbSRIAQAAtJEgBQAA0EaCFAAAQBsJUgAAAG0kSAEAALSRIAUAANBGghQAAEAbCVIAAABtJEgBAAC0kSAFAADQRoIUAABAGwlSAAAAbSRIAQAA1FKQ2rx5c1xyySWx9957R48ePWKfffaJyy+/PJqampqPSR9PmzYt9thjj+KY0aNHx/PPP9/ied54440488wzo3fv3tG3b9+YOHFirF27tgr/IgAAoCOoapD6xje+Eddff3185zvfiWeeeaa4P2vWrLjmmmuaj0n3r7766rjhhhvi0UcfjV69esW4ceNi/fr1zcekELVs2bKYP39+zJkzJx566KE455xzqvSvAgAA2rvO1XzxRx55JE455ZQ46aSTivt77bVX3HbbbbF48eLm0ahvf/vbMXXq1OK45Hvf+14MHDgw7r777jjjjDOKADZ37txYsmRJHHnkkcUxKYideOKJ8c1vfjMGDx4cteLN9Q3xwLMr4qk36uLEap8MAACQZ5D6yEc+Ev/4j/8Yv/jFL2L//fePn/3sZ/Hwww/Ht771rWL/iy++GMuXLy+m81X06dMnRo4cGQsXLiyCVLpN0/kqISpJx9fX1xcjWKeddto7XnfDhg3FVrFmzZritqGhodiq5ZXX18b5t/8senWujwureB7tWeXrW82vc3umvuVT43Kpb7nUt3xqXC717Rj1bWjl61c1SH3ta18rQswBBxwQnTp1KtZMff3rXy+m6iUpRCVpBGpr6X5lX7odMGBAi/2dO3eOfv36NR+zrZkzZ8b06dPf8fi8efOiZ8+eUS3L16X/do60QixNU6Q86lsu9S2fGpdLfculvuVT43Kpb7mqXd9164pfyvMOUnfccUfccsstceutt8bBBx8cTzzxRFxwwQXFdLwJEyaU9rpTpkyJyZMnN99PYW7IkCExduzYomFFtfzyt2/FzJ/9JFKSGjNmTHTp0qVq59Jepb8wpG9O9S2H+pZPjculvuVS3/KpcbnUt2PUd82W2WpZB6mLLrqoGJVKU/SSQw89NF566aVixCgFqUGDBhWPr1ixoujaV5HuDx8+vPg4HbNy5coWz7tp06aik1/l87fVrVu3YttW+oJV84vWpcvvvxxNGZxLe6e+5VLf8qlxudS3XOpbPjUul/qWq9r1be1r11d72CytZdpamuLX2NhYfJzaoqcwtGDBghYJMa19GjVqVHE/3a5atSqWLl3afMz9999fPEdaS1VL6qp9AgAAQP4jUieffHKxJmro0KHF1L7HH3+8aDTxhS98odhfV1dXTPW74oorYr/99iuCVbruVJr6d+qppxbHHHjggXH88cfH2WefXbRIT0OC5513XjHKVUsd+yr/3uQPV9ECAAByVNUgldqUp2D0pS99qZiel4LP3/zN3xQX4K346le/Gm+99VZxXag08nTM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qczo2gcAAPkTpDJjjRQAAORPkMp1ap8hKQAAyJYglenUvkY5CgAAsiVIZTq1DwAAyJcglZm6LWNSpvYBAEC+BKnMaDYBAAD5E6Qyo/05AADkT5DKdkRKkgIAgFwJUtmprJGq9nkAAAA7IkhlxhopAADIX+f3+4kvv/xyvPTSS7Fu3brYfffd4+CDD45u3brt3LPrgJq7n0tSAADQPoLUr3/967j++uvj9ttvj9/85jctWnR37do1Pvaxj8U555wT48ePj/p6g13vhzVSAACQv1annS9/+ctx+OGHx4svvhhXXHFFPP3007F69erYuHFjLF++PO6999445phjYtq0aXHYYYfFkiVLyj3zdn8dqWqfCQAA8EePSPXq1St+9atfRf/+/d+xb8CAAXHssccW26WXXhpz586NV155JY466qjWPj1bWCMFAADtKEjNnDmz1U96/PHHv9/z6fBcRwoAAPK3UxYypel9a9eu3RlP1eHVbRmS2nr9GQAAUONB6qabborzzz8/brnlluL+lClTYtddd40+ffrEmDFj4vXXXy/jPDsMU/sAAKCdBamvf/3rMWnSpHj22WeL5hPnnntuzJ49O2bMmBFXXnll8fjUqVPLO9sONbVPlAIAgHbR/jyFphtvvDE++9nPxmOPPRYjR46MO+64o2h3nhxyyCHxxS9+saxz7VhT+6p9IgAAwM4ZkUoX4U0tzpMjjzwyOnfuXISnitT2/LXXXmvLU7INzSYAAKCdBamGhobo1q1bi4vwdunSpfl+ClabN2/euWfYwVgjBQAA7WxqX5IuxJsuwFtZx5PWRVU69v3ud7/b+WfYQVkjBQAA7ShIHXfccS1+yf+Lv/iL5rU96fHKGh/eH/UDAIB2FqRefPHF8s6EgjVSAADQzoLUsGHDyjsTCtZIAQBAOwpSP//5z1v9pKl7H+9P3ZYxKWukAACgHQSp4cOHt3odlM59758RKQAAaEftz9P6qF/96lfF7Q9+8IPYe++947rrrovHH3+82NLH++yzT7GP988aKQAAaEcjUluvj/r0pz8dV199dZx44oktpvMNGTIkLrnkkjj11FN3/pl2EHX1pvYBAEC7uiBvxZNPPlmMSG0rPZauM/V+XHnllcWUwQsuuKD5sfXr18ekSZOif//+scsuu8T48eNjxYoVLT7v5ZdfjpNOOil69uwZAwYMiIsuuig2bdoUNT8iVeXzAAAAdnKQOvDAA2PmzJmxcePG5sfSx+mxtK+tlixZEt/97nff0aTiwgsvjHvuuSfuvPPOePDBB+PVV1+N008/vcVarBSi0ms/8sgjcfPNN8fs2bNj2rRpUfNrpCQpAABoPxfkTW644YY4+eSTY88992wOP6mrXxpRSsGnLdauXRtnnnlm/J//83/iiiuuaH589erVceONN8att94axx57bPHYTTfdVAS1RYsWxdFHHx3z5s0rRsDuu+++GDhwYNEQ4/LLL4+LL744LrvssujatWvU7oiUJAUAAO0qSH34wx8uGk/ccsst8eyzzxaPfeYzn4m/+qu/il69erXpudLUvTSqNHr06BZBaunSpdHQ0FA8XnHAAQfE0KFDY+HChUWQSreHHnpoEaIqxo0bF+eee24sW7YsRowYsd3X3LBhQ7FVrFmzprhNr5e2aqp0PGxsbKr6ubRHlZqqbTnUt3xqXC71LZf6lk+Ny6W+HaO+Da18/fcVpJIUmM4555z4Y9x+++3x05/+tJjat63ly5cXI0p9+/Zt8XgKTWlf5ZitQ1Rlf2XfjqQpiNOnT3/H42mEK621qqZnVqUxqU6xZs2bce+991b1XNqz+fPnV/sU2jX1LZ8al0t9y6W+5VPjcqlvuapd33Xr1u3cIFWZTtfaF09t0g8++OAdHvPKK6/EV77ylaJQ3bt3jz+lKVOmxOTJk1uMSKWOg2PHjo3evXtHNfV8dkXEMz+LXXbdNU488SNVPZf2KP2FIb3nxowZE126dKn26bQ76ls+NS6X+pZLfcunxuVS345R3zVbZqvttCB11llnxQc+8IH47//9vxdtz7c3hS+tV/qnf/qnYi3TN77xjXcNUmnq3sqVK+NDH/pQi2ltDz30UHznO9+JH//4x0UTiVWrVrUYlUpd+wYNGlR8nG4XL17c4nkrXf0qx2xPt27dim1b6QtW7W+Kzp1//yVJ41LVPpf2LIevdXumvuVT43Kpb7nUt3xqXC71LVe169va1251174UktJapqlTpxbBJoWklBZT04ljjjkmdttttyIUpZGoNEXuc5/73Ls+33HHHVe0UX/iiSeatyOPPLJoPFH5OP0jFixY0Pw5zz33XNHufNSoUcX9dJueIwWyipRi06jSQQcdFDXdta/aJwIAAPzxI1Ip1Hz5y18utsceeywefvjheOmll+Ltt9+Oww8/vGhV/qlPfSr69evXqufbdddd45BDDmnxWBrlSteMqjw+ceLEYgpees4Ujs4///wiPFWmGKapeCkwpdGyWbNmFeuiUtBLDSy2N+JUU137JCkAAMjW+2o2kUaL0la2q666Kurr64sL8aYue6kj33XXXde8v1OnTjFnzpyiS18KWCmITZgwIWbMmBG16g8jUpIUAADk6n137SvDAw880OJ+akJx7bXXFtuODBs2rF11t6vbMiZlRAoAAPLV6jVS/GlYIwUAAPkTpHINUoakAAAgW4JUZkztAwCAdrZGKl0kqy0jJalRROW6SLSOqX0AAJC/NqWcdO2oPffc8z3DVF1dXXHMW2+99Y4L5vLutD8HAIB2FqRSe/H777+/1ccfddRR7+ecOrQUQhPtzwEAoJ2skar8kl/W8RiRAgCAWqDZRG6skQIAgOwJUplpHsMzJAUAANkSpLJdIwUAALSLZhNdunSJj3zkI61ugd6/f//3e14dljVSAADQzoLUo48+Wt6ZUHAdKQAAaGdB6itf+Ur89re/bfXx++67b8yYMeP9nFeHVbdlTKotFz4GAAAyDlIPPPBA/Ou//murjk1B4C//8i8FqTYyIgUAAO0sSNXX18ewYcNafbxRlT8iSCkdAABkywV5M2NqHwAA5E/788yY2gcAAPkTpDKj/TkAALSzNVJvv/12q5tHmJr2x45IqR8AAOSqTUHqu9/9bhGmWmvcuHHv55w6tD+skar2mQAAADslSH384x9vy+G8H/pzAABA9qyRyow1UgAAkD9BKjOVlvHWSAEAQL4EqcwYkQIAgPwJUplxHSkAAMifIJVrkJKkAAAgW4JUru3PjUkBAEC2BKnMGJECAID8CVLZBilJCgAAciVIZTu1DwAAyJUglRlT+wAAIH+CVK7XkaryeQAAADsmSGWmbsuQlDVSAACQL0EKAACgjQSpzFgjBQAA+ROkMmONFAAA5E+Qyow1UgAAkD9BKjNGpAAAIH+CVGaskQIAgPwJUpmOSCWm9wEAQJ4EqVyHpIxKAQBAtqoapK6//vo47LDDonfv3sU2atSo+NGPftS8f/369TFp0qTo379/7LLLLjF+/PhYsWJFi+d4+eWX46STToqePXvGgAED4qKLLopNmzZFrarfakhKjgIAgDxVNUjtueeeceWVV8bSpUvjsccei2OP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u3aNI444IhYsWND8WGNjY3F/1KhRVT03AACgfar5EakkTdNLzSWOPPLI+PCHPxzf/va346233mru4gcAALAztYsg9ZnPfCZ++9vfxrRp02L58uUxfPjwmDt37jsaUAAAAOwM7SJIJeedd16xAQAAlK3m10gBAAD8qQlSAAAAbSRIAQAAtJEgBQAA0EaCFAAAQBsJUgAAAG0kSAEAALSRIAUAANBGghQAAEAbCVIAAABtJEgBAAC0kSAFAADQRoIUAABAG3Vu6ye0R01NTcXtmjVrqn0q0dDQEOvWrSvOpUuXLtU+nXZHfculvuVT43Kpb7nUt3xqXC717Rj1XbMlE1Qywo4IUhHx5ptvFrdDhgyp9qkAAACZZIQ+ffrscH9d03tFrQ6gsbExXn311dh1112jrq6uqueSEnAKdK+88kr07t27qufSHqlvudS3fGpcLvUtl/qWT43Lpb4do75NTU1FiBo8eHDU1+94JZQRqbRQrL4+9txzz8hJevP4Bi2P+pZLfcunxuVS33Kpb/nUuFzqW64c6vtuI1EVmk0AAAC0kSAFAADQRoJUZrp16xaXXnppccvOp77lUt/yqXG51Ldc6ls+NS6X+parW43VV7MJAACANjIiBQAA0EaCFAAAQBsJUgAAAG0kSAEAALSRIJWRa6+9Nvbaa6/o3r17jBw5MhYvXlztU6pJl112WdTV1bXYDjjggOb969evj0mTJkX//v1jl112ifHjx8eKFSuqes65e+ihh+Lkk08urvCd6nn33Xe32J961kybNi322GOP6NGjR4wePTqef/75Fse88cYbceaZZxYX2Ovbt29MnDgx1q5d+yf+l9RmfT//+c+/4z19/PHHtzhGfXds5syZcdRRR8Wuu+4aAwYMiFNPPTWee+65Fse05ufCyy+/HCeddFL07NmzeJ6LLrooNm3aFB1da+r7yU9+8h3v4S9+8YstjlHfHbv++uvjsMMOa75I6ahRo+JHP/pR837v33Lr6/27c1155ZVFDS+44IKafw8LUpn453/+55g8eXLR8vGnP/1pHH744TFu3LhYuXJltU+tJh188MHx2muvNW8PP/xw874LL7ww7rnnnrjzzjvjwQcfjFdffTVOP/30qp5v7t56663iPZnC/vbMmjUrrr766rjhhhvi0UcfjV69ehXv3/SDsSL9kr9s2bKYP39+zJkz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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 19977 (\\N{CJK UNIFIED IDEOGRAPH-4E09}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 35282 (\\N{CJK UNIFIED IDEOGRAPH-89D2}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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+gSpxGh/DgAA6ROkkp2RkqQAACBVglRyynukaj0OAABgYwSpxNgjBQAA6Wva1B9cuHBheOWVV8KaNWvCVlttFXbbbbfQr1+/zTu6XqjS/VySAgCA+ghSf/jDH8K1114bbrnllvDHP/6xU4vuvn37hs985jPhtNNOC8cff3xobDTZtSnskQIAgPT1OO187WtfC3vttVd4+eWXw2WXXRaeeeaZsHz58rB+/fqwePHicNddd4VPf/rT4cILLwx77rlnePTRR/Mded2fR6rWIwEAAD7wjNTAgQPD73//+zBixIh33bf11luHQw45JLtcdNFF4e677w6vvvpq2G+//Xr662lnjxQAANRRkJoxY0aPf+lhhx22qePp9ZxHCgAA0rdZNjLF5X2rVq3aHL+q12ton5LquP8MAAAoeJC64YYbwplnnhluuumm7Ptp06aFwYMHh6FDh4aJEyeGN954I49x9hqW9gEAQJ0Fqe985zth6tSp4bnnnsuaT5x++ulh5syZYfr06eHyyy/Pbr/gggvyG22vWtonSgEAQF20P4+h6frrrw8nnnhieOyxx8IBBxwQbr311qzdebT77ruHr371q3mNtXct7av1QAAAgM0zIxVPwhtbnEf77rtvaGpqysJTWWx7/tprr1XzK+lCswkAAKizINXS0hL69evX6SS8zc3Nle9jsGptbd28I+xl7JECAIA6W9oXxRPxxhPwlvfxxH1R5Y59r7/++uYfYS9ljxQAANRRkDr00EM7vcn/y7/8y8rennh7eY8Pm0b9AACgzoLUyy+/nN9IyNgjBQAAdRakxo4dm99IyNgjBQAAdRSkfve73/X4l8bufWyahvY5KXukAACgDoLUuHHjerwPSue+TWdGCgAA6qj9edwf9fvf/z67/tnPfha23377cM0114Qnnngiu8Svd9hhh+w+Np09UgAAUEczUh33R/3VX/1VuOqqq8IRRxzRaTnf6NGjw7e//e1wzDHHbP6R9hINjZb2AQBAXZ2Qt+ypp57KZqS6irfF80yxGWakajwOAABgMwepXXbZJcyYMSOsX7++clv8Ot4W72Mz7JGSpAAAoH5OyBtdd9114aijjgrbbbddpUNf7OoXm1Dccccdm3uMvXRGSpICAIC6ClL7779/1njipptuCs8991x22wknnBC+8IUvhIEDB27uMfYq5Y6IZqQAAKDOglQUA9Npp522eUeDrn0AAFBPe6Tmzp3b41+6Zs2asGDBgk0dU+/mPFIAAFA/Qerkk08OkydPDrfddltYvXp1t4+JHfu+9a1vZeeTmj9//uYcZ6/RUElSohQAABR+aV8MSddee2244IILsr1QO+20U9h2221D//79w5///Odsr9SqVavCscceG2bNmhX22GOPfEde7137aj0QAADggwep5ubm8LWvfS27PPbYY+Ghhx4Kr7zySnjrrbfCXnvtFc4555zwuc99LgwfPrynv5Ju2CMFAAB12mxi3333zS7kOSMlSQEAQF2dkJf890iZkQIAgHQJUomxRwoAANInSKUapExJAQBAsgSpxFjaBwAAddZsoqWlpaqZksbGxtDUtEn9LHotS/sAACB9VaWc3XbbLWy33XbvG6YaGhqyx8QT986bN++DjrFX0f4cAADqLEgNHDgw3HfffT1+/H777bcpY+rVYgiNtD8HAIA62SNVfpOf1+MxIwUAAEWg2URq7JECAIDkCVKJqczhmZICAIBkCVLJ7pECAADqotlEc3Nz+H//7//1uAX6iBEjNnVcvZY9UgAAUGdB6pFHHslvJGScRwoAAOosSJ111lnhT3/6U48fv+OOO4bp06dvyrh6rYb2OalqTnwMAAAkHKTuv//+8F//9V89emwMAn/9138tSFXJjBQAANRZkGpsbAxjx47t8ePNqnyAIKV0AACQLCfkTYylfQAAkD7tzxNjaR8AAKRPkEqM9ucAAFBne6TeeuutHjePsDTtg85IqR8AAKSqqiD1ox/9KAtTPTV58uRNGVOv9s4eqVqPBAAA2CxB6qCDDqrm4WwK/TkAACB59kglxh4pAABInyCVmHLLeHukAAAgXYJUYsxIAQBA+gSpxDiPFAAApE+QSjVISVIAAJAsQSrV9ufmpAAAIFmCVGLMSAEAQPoEqWSDlCQFAACpEqSSXdoHAACkSpBKjKV9AACQPkEq1fNI1XgcAABAokFqxowZYb/99guDBw8OW2+9dTjmmGPC888/3+kxa9euDVOnTg0jRowIgwYNCscff3xYsmRJp8csXLgwHHnkkWHAgAHZ7znvvPPChg0bQhE1tE9J2SMFAADpqmmQeuCBB7KQNHfu3DB79uzQ0tISJk2aFFavXl15zDnnnBPuuOOOcNttt2WPX7RoUTjuuOMq97e2tmYhav36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YfLkyWHp0qW1Hloh7bbbbuG1116rXB566KHKfeecc0644447wm233RYeeOCBsGjRonDcccfVdLypW716dXZMxrDfnSuuuCJcddVV4brrrguPPPJIGDhwYHb8xhfGsvgmf8GCBWH27NnhzjvvzMLDaaed9iH+KYpb3ygGp47H9I9//ONO96vvxsV/5/F/0HPnzs3q09LSEiZNmpTVvaevC62trdn/wNevXx8efvjhcOONN4aZM2dmHyD0dj2pb3Tqqad2Oobj60aZ+r637bbbLnvzOX/+/PDYY4+FQw45JBx99NHZv/nI8ZtvfSPH7+bx6KOPhh/96EdZcO2osMdwbH9O7e2///6lqVOnVr5vbW0tbbvttqUZM2bUdFxFdNFFF5X22muvbu9btmxZqbm5uXTbbbdVbnv22WfjKQBKc+bM+RBHWVyxVrfffnvl+7a2ttKoUaNK//RP/9Spzv369Sv9+Mc/zr5/5plnsp979NFHK4/51a9+VWpoaCj93//934f8JyhWfaMpU6aUjj766I3+jPpWZ+nSpVm9HnjggR6/Ltx1112lxsbG0uLFiyuPufbaa0tDhgwprVu3rgZ/iuLUN/rsZz9bOuusszb6M+pbvY985COlf/3Xf3X85lzfyPG7eaxcubL08Y9/vDR79uxONS3yMWxGKgExXcdPQeJyqLLGxsbs+zlz5tR0bEUVl5XFZVIf+9jHsk/q43RwFOscPy3tWOu47G/MmDFqvYlefvnlsHjx4k41HTp0aLY8tVzTeB2Xm+27776Vx8THx+M8zmDx/u6///5sKcMnPvGJcPrpp4c33nijcp/6Vmf58uXZ9fDhw3v8uhCv99hjjzBy5MjKY+Ks64oVKzp9as2761t20003hS233DLsvvvuYdq0aWHNmjWV+9S35+In87fccks24xeXoDl+861vmeP3g5s6dWo2q9TxWI2KfAw31eyZqXj99dezf7gdD44ofv/cc8/VbFxFFd/Ax+ne+IYzTr9fcskl4TOf+Ux4+umnszf8ffv2zd50dq11vI/qlevW3fFbvi9exxDQUVNTU/ZGS93fX1zWF5c4bL/99uGll14K3/rWt8Lhhx+e/Y+lT58+6luFtra2bF3+pz71qewNUdST14V43d0xXr6Pjdc3+sIXvhDGjh2bfcD1u9/9Lpx//vnZPqr//M//zO5X3/f31FNPZW/s45LpuIfk9ttvD7vuumt48sknHb851jdy/H5wt9xyS7Z1JS7t66rIr8GCFHUnvsEsi2twY7CKL4C33npr1ggBiubzn/985ev4iVw8rnfYYYdslurQQw+t6diK+Ilo/FCl475J8q9vx/168RiOjWnisRs/GIjHMu8vfjgYQ1Oc8fvpT38apkyZku0lId/6xjDl+P1gXn311XDWWWdleyhjQ7V6YmlfAuJUcfxUuWt3kvj9qFGjajauehE/4dhpp53Ciy++mNUzLqVctmxZp8eo9aYr1+29jt943bVxSuy0EzvNqXv14pLV+LoRj+lIfXvmjDPOyBpx/OY3v8k2l5f15HUhXnd3jJfvY+P17U78gCvqeAyr73uLn9jvuOOOYZ999sk6JcYGNd///vcdvznXtzuO3+rMnz8/+3/UJz/5yWy1RLzEkBqbVMWv48xSUY9hQSqRf7zxH+69997baXlE/L7j+lw2TWwBHT81ip8gxTo3Nzd3qnWcno97qNR608TlZvFFrGNN45rluDenXNN4HV8g44tp2X333Zcd5+X/IdFzf/zjH7M9UvGYjtT3vcUeHvFNflyqE+sSj9mOevK6EK/j0p+OgTV+uhpbJZeX//RW71ff7sRP/qOOx7D6Vif++163bp3jN+f6dsfxW51DDz00q0+sW/kS9/TGPezlrwt7DNeszQWd3HLLLVmXs5kzZ2YduE477bTSsGHDOnUnoWf+7u/+rnT//feXXn755dJvf/vb0oQJE0pbbrll1kkq+upXv1oaM2ZM6b777is99thjpfHjx2cX3rvTzhNPPJFd4svGd7/73ezrV155Jbv/8ssvz47XX/ziF6Xf/e53WYe57bffvvTWW29Vfsdhhx1W2nvvvUuPPPJI6aGHHso695x44ok1/FMVo77xvq9//etZ56J4TN9zzz2lT37yk1n91q5dW/kd6rtxp59+emno0KHZ68Jrr71WuaxZs6bymPd7XdiwYUNp9913L02aNKn05JNPlu6+++7SVlttVZo2bVqpt3u/+r744oul6dOnZ3WNx3B8nfjYxz5WOuiggyq/Q33f2ze/+c2sC2KsX3yNjd/HrpyzZs3K7nf85ldfx28+PtulE2JRj2FBKiE/+MEPsoOob9++WTv0uXPn1npIhXTCCSeUttlmm6yOf/EXf5F9H18Iy+Kb+7/927/NWpsOGDCgdOyxx2b/02fjfvOb32Rv8LteYlvucgv0b3/726WRI0dmHwgceuihpeeff77T73jjjTeyN/aDBg3K2pV++ctfzkIC713f+GY0/o8j/g8jtocdO3Zs6dRTT33Xhyzqu3Hd1TZebrjhhqpeF/7whz+UDj/88NIWW2yRfTgTP7RpaWkp9XbvV9+FCxdmbzqHDx+evT7suOOOpfPOO6+0fPnyTr9HfTfuK1/5SvZvP/5/Lb4WxNfYcoiKHL/51dfx++EEqbcKegw3xP/Ubj4MAACgeOyRAgAAqJIgBQAAUCVBCgAAoEqCFAAAQJUEKQAAgCoJUgAAAFUSpAAAAKokSAEAAFRJkAKg11u/fn3Ycccdw8MPP7xZf+/dd98dxo0bF9ra2jbr7wWg9hpKpVKp1oMAgPfzwAMPhL/5m78J/fv373R7DCmf/exnww9+8INwwAEHhHXr1r3rZ1etWhUWLFgQ+vXr1+3vvuqqq8Idd9wRZs+eXbmtoaEh3H777eGYY47p9NgvfelLYdmyZeHnP/95j8a93377ha997Wvh5JNP7uGfFIAiaKr1AACgJ956663w+c9/Plx88cWdbv/DH/4QvvnNb1bCz5NPPvmunz344IPDxj43jLf/8Ic/DNOnT89l3DF4xaAmSAHUF0v7AOjV5s+fH1566aVw5JFHVv2zMcTF8Nb1EoNb2VFHHRUee+yx7DkAqB+CFAC92n//93+HnXbaKQwePLjqnx09enR47bXXKpcnnngijBgxIhx00EGVx4wZMyaMHDkyex4A6oelfQD0aq+88krYdtttu73vxBNPDH369Ol0W9yDVZ69iveNGjUq+3rt2rXZfqrx48e/a/lh/P3xeQCoH4IUAKG3773q2sCi7MorrwwTJkzodNv5558fWltb3/XYr3zlK2HlypVZw4rGxs4LPrbYYouwZs2azTxyAGpJkAKgV9tyyy3DU0891e19cbYptkXvKC4BjF37OrrsssvCr3/96zBv3rxulwi++eabYautttrMIwegluyRAqBX23vvvcNzzz230a5+7+dnP/tZ1vHv1ltvDTvssMO77o9L/mKjifg8ANQPQQqAXu1zn/tc5TxT1Xr66afDF7/4xWy532677RYWL16cXeIMVNncuXOz81fFvVMA1A9BCoBeLXbZO/bYY8NNN91U9c/GtuZx71Nc2rfNNttULscdd1zlMT/+8Y/DSSedFAYMGLCZRw5ALdkjBUCv9/d///dh4sSJ2fWgQYOy2za21G/mzJmdTrYbLxvz+uuvh5/+9KdZ4AKgvpiRAqDX23PPPcM//uM/hpdffnmz/t54wt5rrrkmbL/99pv19wJQe2akACiEoUOHhjvvvDO7dDV58uTsetiwYWHfffft9ue7tiTv6r1mljZVHMvGxgNAsTWUNrVNEQAAQC9laR8AAECVBCkAAIAqCVIAAABVEqQAAACqJEgBAABUSZACAACokiAFAABQJUEKAAAgVOf/A2m4zicsW8BeAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 24577 (\\N{CJK UNIFIED IDEOGRAPH-6001}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 20998 (\\N{CJK UNIFIED IDEOGRAPH-5206}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "C:\\Users\\榴弹炮\\AppData\\Roaming\\Python\\Python313\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 24067 (\\N{CJK UNIFIED IDEOGRAPH-5E03}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "import numpy as np\n",
    "\n",
    "def plot_fft(title, signal, n):\n",
    "\t# 计算FFT\n",
    "\tfft_result = np.fft.fft(signal)\n",
    "\n",
    "\t# 取FFT结果的绝对值并取对数，以便于可视化\n",
    "\tmagnitude = np.abs(fft_result)\n",
    "\tfrequencies = np.fft.fftfreq(n.size, d=1/800)  # 计算频率轴\n",
    "\n",
    "\t# 绘制结果\n",
    "\tplt.figure(figsize=(10, 6))\n",
    "\tplt.plot(frequencies[:400], magnitude[:400])  # 只绘制前半部分频率以避免混叠问题\n",
    "\tplt.title(title)\n",
    "\tplt.xlabel('频率 (Hz)')\n",
    "\tplt.ylabel('振幅 (dB)')\n",
    "\tplt.grid(True)\n",
    "\tplt.show()\n",
    "\n",
    "\n",
    "# 正弦波频谱\n",
    "N = np.arange(0, 800, 1)  # 时间向量\n",
    "A = 1.0  # 振幅\n",
    "f = 50.0  # 频率为50Hz\n",
    "signal = A * np.sin(2 * np.pi * f * N / 800)  # 创建信号\n",
    "plot_fft('正弦波频谱', signal, N)\n",
    "\n",
    "# 矩形波频谱\t\n",
    "N = np.arange(0, 800, 1)  # 时间向量\n",
    "A = 1.0  # 振幅\n",
    "f = 50.0  # 频率为50Hz\n",
    "signal = A * np.ones(800)  # 创建信号\n",
    "\n",
    "plot_fft('矩形波频谱', signal, N)\n",
    "\n",
    "# 三角波频谱\n",
    "N = np.arange(0, 800, 1)  # 时间向量\n",
    "A = 1.0  # 振幅\n",
    "f = 50.0  # 频率为50Hz\n",
    "signal = A * np.abs(np.sin(2 * np.pi * f * N / 800))  # 创建信号\n",
    "\n",
    "plot_fft('三角波频谱', signal, N)\n",
    "\n",
    "# 正态分布频谱\n",
    "from scipy.stats import norm\n",
    "\n",
    "N = np.arange(0, 800, 1)  # 时间向量\n",
    "A = 1.0  # 振幅\n",
    "f = 50.0  # 频率为50Hz\n",
    "signal = A * norm.pdf(N, loc=400, scale=20)  # 创建信号\n",
    "\n",
    "plot_fft('正态分布频谱', signal, N)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dd3d2b46",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 通过麦克风录制声音并通过FFT分析声音频谱，并绘制声音频谱图。\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import sounddevice as sd\n",
    "import math\n",
    "\n",
    "# 采样率\n",
    "fs = 3000\n",
    "\n",
    "def record_audio(duration=5):\n",
    "\t\"\"\"\n",
    "\t录制音频\n",
    "\t:param duration: 录制时长，单位为秒\n",
    "\t:return: 录制的音频数据\n",
    "\t\"\"\"\n",
    "\tmyrecording = sd.rec(int(duration * fs), samplerate=fs, channels=1)\n",
    "\tsd.wait()\n",
    "\treturn myrecording\n",
    "\t\n",
    "# 录制音频\n",
    "audio_data = record_audio(duration=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "abeb45b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_spectrogram(audio_data):\n",
    "\t\"\"\"\n",
    "\t绘制声音频谱图\n",
    "\t:param audio_data: 音频数据\n",
    "\t:return: 声音频谱图\n",
    "\t\"\"\"\n",
    "\t# 计算FFT\n",
    "\tN = len(audio_data)\n",
    "\tfft_data = np.fft.fft(audio_data)\n",
    "\tfreqs = np.fft.fftfreq(N, 1/fs)\n",
    "\t# 取绝对值，取对数，取20*log10\n",
    "\tfft_data = np.abs(fft_data)\n",
    "\tfft_data = [i==0 and 1e-10 or math.log10(i) for i in fft_data]\n",
    "\t# 绘制声音频谱图\n",
    "\tplt.plot(freqs, fft_data)\n",
    "\tplt.xlim(0,500)\n",
    "\tplt.xlabel('频率 [Hz]')\n",
    "\tplt.ylabel('振幅 [10dB]')\n",
    "\n",
    "\tprint(fft_data)\n",
    "\n",
    "\t# 绘制频谱概率分布图\n",
    "\t(xVoice, yVoice, distVoice) = vectors_to_multi_dist(freqs, fft_data, 10)\n",
    "\tplot_function_and_dist(xVoice, yVoice, distVoice, '声音频谱分布')\n",
    "\n",
    "\n",
    "# 绘制声音频谱图\n",
    "plot_spectrogram(audio_data)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
